unit FBuscaCliente;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, StdCtrls, Grids, XDBGrids, DB, ZAbstractRODataset, ZDataset,
  ExtCtrls, Buttons;

type
  TFormBusca_Cliente = class(TForm)
    Label1: TLabel;
    pBuscar: TPanel;
    qClientes: TZReadOnlyQuery;
    dsClientes: TDataSource;
    eCodigo: TEdit;
    XDBGrid1: TXDBGrid;
    eNombre: TEdit;
    eDireccion: TEdit;
    ePoblacion: TEdit;
    Label2: TLabel;
    Label3: TLabel;
    Label4: TLabel;
    Label5: TLabel;
    Label6: TLabel;
    pBotones: TPanel;
    BtnAceptar: TBitBtn;
    BtnCancelar: TBitBtn;
    procedure eCodigoChange(Sender: TObject);
    procedure BtnAceptarClick(Sender: TObject);
    procedure FormShow(Sender: TObject);
    procedure XDBGrid1DblClick(Sender: TObject);
  private
    { Private declarations }
  public
    { Public declarations }
    Id_Cliente: Integer;
  end;

var
  FormBusca_Cliente: TFormBusca_Cliente;

implementation

uses ModDatos;

{$R *.dfm}

procedure TFormBusca_Cliente.eCodigoChange(Sender: TObject);
var
  StrSQL: String;
begin
  if eCodigo.Text <> '' then StrSQL := 'WHERE ID_CLIENTE LIKE ' + QuotedStr( '%' + eCodigo.Text + '%') + ' ';
  if eNombre.Text <> '' then
    if StrSQL = '' then StrSQL :=         'WHERE NOMBRE LIKE ' + QuotedStr( '%' + eNombre.Text + '%') + ' '
                   else StrSQL := StrSQL  + 'AND NOMBRE LIKE ' + QuotedStr( '%' + eNombre.Text + '%') + ' ';
  if eDireccion.Text <> '' then
    if StrSQL = '' then StrSQL :=         'WHERE DIRECCION LIKE ' + QuotedStr( '%' + eDireccion.Text + '%') + ' '
                   else StrSQL := StrSQL  + 'AND DIRECCION LIKE ' + QuotedStr( '%' + eDireccion.Text + '%') + ' ';
  if ePoblacion.Text <> '' then
    if StrSQL = '' then StrSQL :=         'WHERE POBLACION LIKE ' + QuotedStr( '%' + ePoblacion.Text + '%') + ' '
                   else StrSQL := StrSQL  + 'AND POBLACION LIKE ' + QuotedStr( '%' + ePoblacion.Text + '%') + ' ';
  StrSQL := 'SELECT ID_CLIENTE, NOMBRE, DIRECCION, POBLACION ' +
            'FROM CLIENTES ' +
            StrSQL + ' ' +
            'ORDER BY ID_CLIENTE ';
  md.AbreQuery( qClientes, StrSQL);
end;

procedure TFormBusca_Cliente.BtnAceptarClick(Sender: TObject);
begin
  if qClientes.IsEmpty then ModalResult := mrCancel
                       else id_Cliente  := qClientes.fieldByName( 'ID_CLIENTE').AsInteger;
end;

procedure TFormBusca_Cliente.FormShow(Sender: TObject);
begin
  if not md.TPresupuestos.FieldByName( 'ID_CLIENTE').IsNull then
    qClientes.Locate( 'ID_CLIENTE', md.TPresupuestos.FieldByName( 'ID_CLIENTE').AsString, []);
end;

procedure TFormBusca_Cliente.XDBGrid1DblClick(Sender: TObject);
begin
  BtnAceptarClick( Sender);
  ModalResult := mrOk;
end;

end.
